#ifndef _DMA_H_
#define _DMA_H_

// DMA传输开启条件:
// 待传输数据>0, 外设为使能状态
// DMA对外设(寄存器)传输时, 会根据外设特性进行灵活调整
// 比如对于USART_TX, 会在前一个数据发送完(即TC标志位为1)之后再传输下一个
// 对于USART_RX, 会在每收到一个数据(RXNE标志位为1)之后才进行一次传输

#include "stm32f10x.h"
#include "stm32f10x_dma.h"

#define DMA_CH_M2M DMA1_Channel5
#define DMA_CH_M2PCCOM DMA1_Channel4

// 内存到内存之间的拷贝
void myDMA_Init_M2M(uint32_t srcAddr, uint32_t destAddr, uint32_t dataLen);
// 初始化内存到串口USART1的拷贝
void myDMA_Init_M2PCCOM(uint32_t srcAddr, uint32_t dataLen);
/**
 * @brief 启动一次内存到USART1的拷贝
 * DMA启动条件: 当前待传输数据>0, 且DMA为ENABLE状态
 * 如果之前一次已经传输过, 待传输数据会为0
 * 想要重新传输, 需要先停止外设. 重新设置待传输数据, 再开启
 * 
 * @param dataLen 
 */
void myDMA_Start_M2PCCOM(uint32_t dataLen);

#endif // _DMA_H_
